home *** CD-ROM | disk | FTP | other *** search
- IF1
- INCLUDE MACRO.LIB
- ENDIF
- M EQU BYTE PTR 0[BX]
- CODE SEGMENT PARA PUBLIC
- ASSUME CS:CODE,DS:CODE,ES:CODE
- ORG 100H
- START PROC NEAR
- JMP START1
- DCADR DW DUMPX
- START1: MVC MYFCB,12,5CH
- MVC OPTTBL,11,6DH
- MOV AL,'O'
- CALL CHKOPT
- MOV BX,OFFSET (DUMPO)
- JZ SETIT
- MOV AL,'S'
- CALL CHKOPT
- MOV BX,OFFSET (DUMPS)
- JZ SETIT
- MOV AL,'B'
- CALL CHKOPT
- MOV BX,OFFSET (DUMPB)
- JZ SETIT
- MOV BX,OFFSET (DUMPX)
- SETIT: MOV DCADR,BX
- MOV AL,'F'
- CALL CHKOPT
- JZ FFIND
- MOV AL,'G'
- CALL CHKOPT
- JZ GFIND
- JMP ALLSET
- GFIND: MOV DX,OFFSET (GCMSG)
- MOV AL,'C'
- CALL CHKOPT
- JNZ L_1
- JMP FGCCOM
- L_1:
- MOV DX,OFFSET (GOMSG)
- MOV AL,'O'
- CALL CHKOPT
- JZ FGOCOM
- MOV AL,'S'
- CALL CHKOPT
- JZ FGOCOM
- MOV DX,OFFSET (GBMSG)
- MOV AL,'B'
- CALL CHKOPT
- JZ FGBCOM
- MOV DX,OFFSET (GHMSG)
- JMP SHORT FGHCOM
- FFIND: MOV DX,OFFSET (FCMSG)
- MOV AL,'C'
- CALL CHKOPT
- JZ FGCCOM
- MOV DX,OFFSET (FOMSG)
- MOV AL,'O'
- CALL CHKOPT
- JZ FGOCOM
- MOV AL,'S'
- CALL CHKOPT
- JZ FGOCOM
- MOV DX,OFFSET (FBMSG)
- MOV AL,'B'
- CALL CHKOPT
- JZ FGBCOM
- MOV DX,OFFSET (FHMSG)
- FGHCOM: MOV AL,16
- JMP SHORT FGHOCM
- FGBCOM: MOV AL,2
- JMP SHORT FGHOCM
- FGOCOM: MOV AL,8
- FGHOCM: MOV BYTE PTR CVBASE,AL
- CALL GETDTA
- MOV BX,OFFSET (82H)
- SUB AL,AL
- MOV BYTE PTR SORTWK,AL
- FGHOLP: MOV CL,0
- CVBASE EQU $-1
- ASGP ,,,' ',MSC047
- JNC L_2
- JMP BADVAL
- L_2:
- MOV AL,DH
- OR AL,AL
- JZ L_3
- JMP BADVAL
- L_3:
- PUSH BX
- MOV BX,OFFSET (SORTWK)
- INC M
- MOV AL,M
- DADA
- MOV M,DL
- POP BX
- MOV AL,M
- INC BX
- OR AL,AL
- JNZ FGHOLP
- JMP SHORT FGCOM
- FGCCOM: CALL GETDTA
- MOV BX,OFFSET (81H)
- MOV CH,M
- INC CH
- MVC SORTWK
- FGCOM: MOV WORD PTR CSCRLF,09090H
- ALLSET: OPENI MYFCB-7,NOFILE
- MOV DX,OFFSET (0)
- SUB AL,AL
- STAM BUFCT,MYFCB+35
- MOV BX,OFFSET (-1)
- MOV WORD PTR MYFCB+33,BX
- LOOP: PUSH DX
- DOS 20,MYFCB-7
- POP DX
- CMP AL,1
- JZ GOTEOF
- MOV BX,WORD PTR MYFCB+33
- INC BX
- MOV WORD PTR MYFCB+33,BX
- MOV AL,'G'
- CALL CHKOPT
- MOV BX,OFFSET (80H)
- JZ GL1
- MOV AL,'F'
- CALL CHKOPT
- MOV BX,OFFSET (80H)
- JNZ NOFL1
- JMP FL1
- NOFL1: MOV CH,BH
- MOV CL,BL
- MOV AL,BYTE PTR MYFCB+34
- OR AL,AL
- RCR AL,1
- DMPCAL: CALL DCADR
- MOV AL,'P'
- CALL CHKOPT
- JNZ LOOP
- PUSH DX
- DOS 7
- POP DX
- CMP AL,3
- JZ GOTEOF
- JMP LOOP
- NOFILE: CALL ABTPGM
- DB 'No input file$'
- ABTPGM: POP DX
- DOS 9
- GOTEOF: INT 20H
- BADVAL: CALL ABTPGM
- DB 'Bad numeric value$'
- GL1: MOV AL,M
- PUSH BX
- CALL GLCHK
- POP BX
- JC GL2
- MOV CX,OFFSET (1)
- PUSHM BX,DX
- MOV AL,BYTE PTR MYFCB+34
- OR AL,AL
- RCR AL,1
- CALL DCADR
- POPM DX,BX
- GL2: INC DX
- INC BL
- JNZ GL1
- JMP LOOP
- GLCHK: MOV BX,OFFSET (SORTWK)
- MOV CH,M
- INC CH
- GLC1: INC BX
- DEC CH
- STC
- JNZ L_4
- RET
- L_4:
- CMP AL,M
- JNZ L_5
- RET
- L_5:
- JMP SHORT GLC1
- FL1: PUSH BX
- MOV AL,BYTE PTR BUFCT
- OR AL,AL
- MOV AL,M
- JNZ FL1A
- MOV BX,WORD PTR MYFCB+33
- MOV WORD PTR SVRCD,BX
- FL1A: PUSH DX
- CALL FLCHK
- JC FL2
- JNZ FL3
- POP DX
- MOV BX,OFFSET (SORTWK)
- MOV CL,M
- INC BX
- MOV CH,0
- PUSH DX
- MOV AL,BYTE PTR SVRCD+1
- OR AL,AL
- RCR AL,1
- CALL DCADR
- FL2: MOV DX,OFFSET (0)
- SVRCD EQU $-2
- MOV BX,WORD PTR MYFCB+33
- CDEHL
- XCHG BX,DX
- JZ FL2A
- MOV WORD PTR MYFCB+33,BX
- MOV AL,0
- DOS 33,MYFCB-7
- OR AL,AL
- JZ L_6
- JMP GOTEOF
- L_6:
- DOS 20,MYFCB-7
- FL2A: POPM DX,BX
- MOV AL,DL
- AND AL,7FH
- OR AL,80H
- MOV BL,AL
- MOV BH,0
- INC DX
- PUSHM BX,DX
- FL3: POPM DX,BX
- INC BL
- JNZ FL1
- JMP LOOP
- FLCHK: MOV BX,OFFSET (BUFCT)
- MOV CL,M
- MOV BX,OFFSET (SORTWK+1)
- MOV CH,0
- ADD BX,CX
- CMP AL,M
- MOV BX,OFFSET (BUFCT)
- STC
- JNZ FLC1
- MOV AL,BYTE PTR SORTWK
- INC M
- CMP AL,M
- JZ L_7
- RET
- L_7:
- FLC1: MOV M,0
- RET
- BUFCT DB 1 DUP (?)
- GETDTA: DOS 9
- MOV BX,OFFSET (125)
- MOV WORD PTR DS:80H,BX
- DOS 10,80H
- CALL SCRLF
- MOV BX,OFFSET (81H)
- MOV AL,M
- DADA
- INC BX
- MOV M,0
- RET
- GHMSG DB 'Enter hex values for global find',13,10,'*$'
- GCMSG DB 'Enter characters for global find',13,10,'*$'
- GOMSG DB 'Enter octal values for global find',13,10,'*$'
- FHMSG DB 'Enter hex values for string search',13,10,'*$'
- FCMSG DB 'Enter characters for string search',13,10,'*$'
- FOMSG DB 'Enter octal values for string search',13,10,'*$'
- GBMSG DB 'Enter binary values for global find',13,10,'*$'
- FBMSG DB 'Enter binary values for string search',13,10,'*$'
- CHKOPT: MOV BX,OFFSET (OPTTBL)
- CO1: CMP AL,M
- JNZ L_8
- RET
- L_8:
- LAHF
- XCHG AL,AH
- PUSH AX
- XCHG AL,AH
- MOV AL,M
- CMP AL,' '
- JZ CO2
- OR AL,AL
- JZ CO2
- POP AX
- XCHG AL,AH
- SAHF
- INC BX
- JMP SHORT CO1
- CO2: POP AX
- XCHG AL,AH
- SAHF
- RET
- OPTTBL DB 11 DUP (?)
- DB 0
- DUMPX: MOV BYTE PTR HEXHB,AL
- CALL DSPXAD
- PUSHM BX,DX,CX
- CALL DSPHEX
- POPM CX,DX,BX
- CALLM DSPCHR,SCRLF
- OR CX,CX
- MOV AL,0
- HEXHB EQU $-1
- JNZ DUMPX
- RET
- DSPXAD: PUSHM DX,BX
- MOV DL,DH
- MOV DH,AL
- MOV AL,'R'
- CALL CHKOPT
- POP BX
- JNZ DXA1
- INC DX
- DXA1: MOV AL,DH
- CALL HEXBYT
- MOV AL,DL
- CALL HEXBYT
- POP DX
- MOV AL,DL
- CALL HEXBYT
- SBLANK: MOV AL,' '
- SCHAR: PUSHM BX,DX,CX
- MOV DL,AL
- DOS 2
- POPM CX,DX,BX
- RET
- DSPHEX: MOV AL,M
- CALL HEXBYT
- INCM BX,DX
- DEC CX
- CALL SBLANK
- MOV AL,DL
- AND AL,0FH
- CALL CSCRLF
- OR CX,CX
- JNZ DSPHEX
- RET
- DSPCHR: PUSH BX
- MOV AL,'M'
- CALL CHKOPT
- POP BX
- MOV AL,M
- JNZ DC0
- AND AL,7FH
- DC0: TWR 20H,7FH
- JNC DC1
- MOV AL,'.'
- DC1: CALL SCHAR
- INCM BX,DX
- DEC CX
- MOV AL,DL
- AND AL,0FH
- CALL CSCRLF
- OR CX,CX
- JNZ DSPCHR
- RET
- CSCRLF: JZ L_9
- RET
- L_9:
- MOV BP,SP
- XCHG BX,[BP]
- POP BX
- RET
- SCRLF: MOV AL,13
- CALL SCHAR
- MOV AL,10
- JMP SHORT SCHAR
- HEXBYT: PUSH AX
- RLM 4
- CALL HB1
- POP AX
- HB1: AND AL,0FH
- DSPDIG: ADD AL,90H
- DAA
- ADC AL,40H
- DAA
- JMP SCHAR
- DUMPB: MOV BYTE PTR BINHB,AL
- CALLM DSPXAD,DSPBIN,SCRLF
- OR CX,CX
- MOV AL,0
- BINHB EQU $-1
- JNZ DUMPB
- RET
- DSPBIN: MOV AL,M
- PUSH CX
- MOV CL,8
- DSPB1: ROL AL,1
- MOV CH,AL
- AND AL,1
- CALL DSPDIG
- DEC CL
- MOV AL,CH
- JNZ DSPB1
- POP CX
- INCM BX,DX
- DEC CX
- MOV AL,DL
- AND AL,7
- CALL CSCRLF
- OR CX,CX
- JNZ L_10
- RET
- L_10:
- CALL SBLANK
- JMP SHORT DSPBIN
- DUMPS: MOV BYTE PTR OCTHB,AL
- CALLM DSPSAD,DSPOCT,SCRLF
- OR CX,CX
- MOV AL,0
- OCTHB EQU $-1
- JNZ DUMPS
- RET
- DSPSAD: PUSHM DX,BX
- MOV DL,DH
- MOV DH,AL
- MOV AL,'R'
- CALL CHKOPT
- POP BX
- JNZ DSA1
- INC DX
- DSA1: MOV AL,DH
- CALL OCTBYT
- MOV AL,DL
- CALL OCTBYT
- POP DX
- MOV AL,DL
- CALL OCTBYT
- JMP SBLANK
- DSPOCT: MOV AL,M
- CALL OCTBYT
- INCM BX,DX
- DEC CX
- MOV AL,DL
- AND AL,0FH
- CALL CSCRLF
- OR CX,CX
- JNZ L_11
- RET
- L_11:
- CALL SBLANK
- JMP SHORT DSPOCT
- OCTBYT: PUSHM AX,AX
- RLM 2
- AND AL,3
- CALL DSPDIG
- POP AX
- RRM 3
- CALL OB1
- POP AX
- OB1: AND AL,7
- JMP DSPDIG
- DUMPO: MOV BYTE PTR OCTHB,AL
- CALLM DSPOAD,DSPOCT,SCRLF
- OR CX,CX
- MOV AL,BYTE PTR OCTHB
- JNZ DUMPO
- RET
- DSPOAD: PUSHM BX,DX,CX
- MOV DL,DH
- MOV DH,AL
- MOV AL,'R'
- CALL CHKOPT
- JNZ DOA1
- INC DX
- DOA1: MOV BH,DL
- MOV BL,DH
- MOV WORD PTR OCTBUF+1,BX
- POPM CX,DX
- PUSHM DX,CX
- MOV AL,DL
- MOV BYTE PTR OCTBUF+3,AL
- MOV CL,8
- DOALP1: SUB AL,AL
- MOV BYTE PTR OCTBUF,AL
- MOV CH,3
- DOALP2: PUSH CX
- SHFTL OCTBUF,4
- POP CX
- DEC CH
- JNZ DOALP2
- MOV AL,BYTE PTR OCTBUF
- CALL DSPDIG
- DEC CL
- JNZ DOALP1
- POPM CX,DX,BX
- JMP SBLANK
- DB 0FFH,0,0,0,0,0,1FH
- MYFCB DB 37 DUP(?)
- OCTBUF DB 4 DUP (?)
- SYS031: MOV AH,15
- PUSH DX
- MOV BX,19
- ADD BX,DX
- XCHG BX,DX
- FILL ,4,0
- XCHG BX,DX
- DOS
- POP DX
- MOV BX,39
- ADD BX,DX
- MOV M,0
- INC AL
- STC
- JNZ L_12
- RET
- L_12:
- OR AL,AL
- RET
- MSC011: MOV BP,SP
- XCHG BX,[BP]
- MOV AL,M
- INC BX
- MOV CH,M
- INC BX
- XCHG BX,[BP]
- MSC012: MOV SI,DX
- MOV [SI],AL
- INC DX
- DEC CH
- JNZ MSC012
- RET
- MSC022: MOV AL,M
- MOV SI,DX
- MOV [SI],AL
- INC BX
- INC DX
- DEC CH
- JNZ MSC022
- RET
- MSC045: MOV AL,M
- INC BX
- CMP AL,58
- JNC L_14
- JMP GL_043
- L_14:
- CALL MSC102
- SUB AL,7
- GL_043: SUB AL,48
- CMP AL,DL
- CMC
- RET
- MSC047: MOV AL,M
- CMP AL,CH
- JNZ GL_04A
- INC BX
- JMP SHORT MSC047
- GL_04A: PUSH BX
- MOV BX,OFFSET (0)
- GL_045: MOV BP,SP
- XCHG BX,[BP]
- MOV DL,CL
- CALL MSC045
- JC MSC472
- XCHG BX,[BP]
- LAHF
- XCHG AL,AH
- PUSH AX
- XCHG AL,AH
- ADD BX,BX
- JC MSC473
- MOV AL,CL
- CMP AL,2
- JZ MSC474
- MOV DX,BX
- ADD BX,BX
- JC MSC473
- ADD BX,BX
- JC MSC473
- CMP AL,8
- JZ MSC474
- CMP AL,10
- JZ GL_04B
- MOV DX,BX
- GL_04B: ADD BX,DX
- JC MSC473
- MSC474: POP AX
- XCHG AL,AH
- SAHF
- CALL MSC212
- JC MSC475
- JMP SHORT GL_045
- MSC472: DEC BX
- POP DX
- SUB AL,AL
- MOV AL,M
- RET
- MSC473: POP AX
- XCHG AL,AH
- SAHF
- STC
- MSC475: POP BX
- MOV DX,OFFSET (0)
- RET
- MSC081: XCHG BX,DX
- MOV CH,0
- ADD BX,CX
- XCHG BX,DX
- OR AL,AL
- GL_081: DEC DX
- MOV SI,DX
- MOV AL,[SI]
- RCL AL,1
- MOV SI,DX
- MOV [SI],AL
- DEC CL
- JNZ GL_081
- RET
- MSC102: CMP AL,61H
- JNC L_19
- RET
- L_19:
- CMP AL,7BH
- JC L_20
- RET
- L_20:
- SUB AL,20H
- RET
- MSC11: MOV BP,SP
- XCHG BX,[BP]
- CMP AL,M
- LAHF
- INC BX
- SAHF
- JC GL_111
- CMP AL,M
- CMC
- GL_111: LAHF
- INC BX
- XCHG BX,[BP]
- RET
- MSC212: PUSH DX
- MOV DL,AL
- MOV DH,0
- ADD BX,DX
- POP DX
- RET
- SORTWK EQU $
- START ENDP
- CODE ENDS
- END START
- P]
- RET
- MSC212: PUSH DX
- MOV DL,AL
- MOV DH,0
- ADD BX,DX
- POP